
The changes for each release are in chronological order. The most recent
changes can be found at the bottom of this file. (Try pressing Ctrl-End.)

Minor changes, such as to the in-context help or the game identification
database, may be omitted from this file. If a release consists entirely
of minor changes, the version number will be updated but nothing will be
documented herein.

------------------------------------------------------------------------

	XM6 Pro-68k Initial Release (120303) (forked from XM6 v2.05)

Additions & Changes:

Added many new accelerators (keyboard shortcuts).

Added a level meter (now off by default).

Added a menu command to dump RAM to a file.

Added a menu commands to make CPU subwindows more convenient.

Added a menu command to close all subwindows.

Added a menu commands to load directories as disk images.
Directories can also be dropped onto the main window.

Added limited .zip file support. Although the images will be writable,
there is no write-back support. Only certain floppy disk image formats
are allowed within archives.

Added a menu command to log CPU state. Limited to 20 MB.

Added a menu command to toggle high-priority mode.
Also available by pressing Alt-P. This option is not saved.

 Caution: This can cause problems by shutting out lower priority tasks.
 Make sure your computer can handle the processing load first.

Certain accelerators are now multiplexed based on execution state.
For example, Alt-F12 now toggles execution state (Break/Execute).

Disassembly window now has a context menu command to save the
disassembly to a file.

Disassembly window can now be scrolled with the mouse wheel.
Hold Ctrl or Shift to scroll by pages instead of lines.

Memory window can also be scrolled with the mouse wheel. (see above)
Hold Ctrl to scroll by pages, Shift (or Ctrl+Shift) for top/bottom.

Disassembly and memory windows also have some new scrolling-related
keyboard shortcuts available when in pop-up mode.

Disassembly window will put approximately 4kB worth of disassembled
instructions on the clipboard if you press Ctrl-C (or even just 'C')
while the window is active (requires pop-up windows to be enabled).
The disassembly will start with the currently viewed lines.

Breakpoints in the disassembly window can no longer be manipulated
while the emulator is running and PC synchronization is on.

In pop-up mode, the disassembly window now discards the first mouse
button click it receives when inactive. Consequently, you can activate
it without worrying about interfering with breakpoints. This feature
can also be a mild annoyance sometimes.

Changed the behavior of the preloaded address for "Go to Address"
(formerly called Enter Address) in disassembly windows: now it always
uses the address on the current line.

Scrolling the disassembly window backwards by pages now utilizes
a much better (albeit more intensive) algorithm.

Disassembly window now has a run-to-cursor menu command, which can
also be activated directly with the mouse. There is also a keyboard
shortcut which will run to whatever address is at the top of the
disassembly window, provided that the current PC is not on the
same line (which it usually is).

Several new mouse functions were added to the disassembly window.
See the appropriate reference file for a complete list.

Memory window display units can now be adjusted through the keyboard
in addition to the usual context menu.

Memory window now highlights selected addresses.

Memory window will jump to an address in memory if you double-click
on it while holding the Control key. This works with any data size,
but will always read 32-bits starting from the first byte of the
item you clicked on.

Memory window pop-up menu condensed with a new "page" submenu.

Memory window now has finer resolution (16-byte).

Memory windows now have search dialogs.

Certain keys are now translated in order to make it easier
to enter English text and symbols using an American keyboard.
While this should work for everyday use, certain usage patterns
can cause the wrong key to be sent. This may not be easy to fix.
Also be aware that these special translations will not occur when
XM6 is in Japanese mode.

 NOTE: While XM6 allows you to remap keys, the shifted and non-shifted
 versions of each character associated with a Japanese key don't always
 map to the same key on other keyboards. For example, Shift-2 is '@'
 on an American keyboard and a quote mark on a Japanese Keyboard.
 You could remap the '2' key to the apostrophe/quote key, but then
 you'd have to press the apostrophe key to type the number two.

 So that's why the above hack was implemented, bypassing the remapper
 for certain useful symbols.

Floppy disk creation will now add the appropriate extension for the
selected filter if no extension is specified.

Pressing the grave/tilde key will now toggle speed limiting.
Holding it down will toggle it temporarily. You get both behaviors
in the same key by measuring how long the key was held down.

The program now includes an internal copy of the basic IPL ROM.
It will still try to load IPL ROMs externally first, however.
As far as I can tell, the Japanese license permits this usage.

Removed the CGROM check since it is not a critical component.

Attempts to force SRAM settings for Western glyphs (e.g. backslash
instead of Yen sign) when not running in Japanese mode.

Implemented better 32-bit PC support.

Cleaned up the options dialog a bit.

Invalid MRU (history) elements will be removed on access.

Added a Clear History command to erase all history lists.

When loading a state file, XM6 will no longer overwrite certain
interface-related configuration options with values from the file.

Clicking on the text displayed on either side of the FM/ADPCM volume
sliders will set them to their default value. If they are already at
their default value, they will be set to the maximum value.

If the next instruction to be executed is a conditional branch that
should succeed according to the current CCR, it will be marked as such
in the disassembly window. Also applies to DBcc but never BRA, BSR,
or other unconditional instructions. Scc instructions will likewise
show the value to be assigned.

Disassembler tweaked a bit:
- DBRA becomes the more correct DBF
- DBcc no longer has a superfluous extension
- MOVEQ no longer has a superfluous extension
- Bit manipulation instructions no longer have superfluous extensions
- BTST had a problem with a certain addressing mode, which is now fixed

 Remember the following facts and you won't need those crutches:

 MOVEQ always sign extends from 8 to 32 bits.

 DBcc _breaks_ the loop if the condition is true.
 It could be read as "(decrement and branch) unless (condition)".

 Bit manipulation instructions (BCHG, BCLR, BSET, BTST) are 32-bit
 if and only if the destination is a data register. They are 8-bit
 in every other case (even that unconventional one).


Bug Fixes:

Double bus faults should no longer lock up the program.

Fixed a distracting mouse cursor bug for pop-up windows.

Memory window caption no longer gets truncated.

Speed percentage no longer resets on window paint.

Disassembly window now always snaps to PC when you halt execution.

Fixed manually flipping the S bit in the system byte.

Fixed a bug where disabled breakpoints could disappear.

Fixed a bug in the unrecognized-instruction-suppressor routine when
moving backwards in the disassembly window. Fewer invalid instructions
will now appear.

Some of the English floppy disk file filters were wrong.

Fixed a bug where, after closing the last subwindow, the Window menu
didn't update correctly the next time it was opened.

Fixed a problem where XM6 could crash in certain situations
if you sent it command line arguments too soon after quitting.
The old instance would try to implement the arguments even while
it was shutting down.

Memory window now positioned correctly when jumping to the last few
addresses in the current view range.

------------------------------------------------------------------------

	Release 2 (120321)

Directory-as-image loading is now more tolerant of bad file names
and has slightly better error handling.

Fixed a harmless but annoying bug in the RAM dumper: Some code was
temporarily inserted for experimental purposes but was never removed.

------------------------------------------------------------------------

	Release 3 (120425)

Improved single-line backwards scrolling for the disassembly window.

Fixed a bug that was causing forward single-line scrolling to miss
the correct address for the next line in some circumstances.

Improved error reporting when directory->image building fails.

Improved disassembly window's address stack. Current address will now
be pushed onto the stack for most explicit address changes.

Memory window input handling changed such that the Left/Right keys
no longer cycle through the display unit types but instead navigate
through a history buffer of views that correspond to addresses which
have been explicitly selected in the memory window.

------------------------------------------------------------------------

	Release 4 (130511)

Added commands to take screen shots. (Use Alt-Q or the menus.)

Added a command to clear RAM and reset the virtual machine.

Improved invalid file name rejection when building a directory image.

Full Screen mode no longer switches the display settings if the current
resolution is already 800 x 600. Avoids unnecessary wear on the monitor.

A new menu option called Full Screen Stretch has been added. It changes
the behavior of Full Screen mode to better serve those with large,
high-resolution displays, as well as those who don't like having their
screen mode changed, even temporarily. Refer to the Reference Manual
for all the gory details.

------------------------------------------------------------------------

	Release 5 (140316)

Run to Cursor (Ctrl-F10) will now work even if the cursor corresponds
to the current PC. This is useful for iterating loops and other periodic
sequences without setting an explicit breakpoint.

Branches with negative offsets are now marked in the disassembly window.
A (visible) branch target that will be taken this cycle is also marked.

The destination of a branch that will be taken during the next cycle
will be marked, as long as it is visible in the disassembly window.

Fixed a minor bug in the Full Screen Stretch redrawing routines.

Added an option called "Full Screen Rescale". When enabled, the standard
resolution multipliers will be ignored in Full Screen Stretch mode.
This improves the aspect ratio of a few games, mostly arcade ports.

------------------------------------------------------------------------

	Release 6 (161123)

If no MIDI board is installed in the emulated X68000, the corresponding
resources will no longer be manipulated. Previously the MIDI subsystem
would open the configured MIDI devices (if any) regardless, which was
wasteful and caused interference with other programs in rare situations.

The workaround for older versions of the program is to select "(None)"
for both MIDI devices before disabling the MIDI board entirely.

--------------------------------------------------------------------------------

	Release 7 (180617)

Additions & Changes:

Upgraded to the 2.06 baseline. Thanks to Rob "Doc Robot" Miller.

Added a context menu to the log window.

The log window will now (usually) follow new entries as they are added.

Rearranged the register submenus for the disassembly and memory windows.

Shift-C will copy one disassembled instruction to the clipboard.

Reset and Clear now clears _some_ video-related memory.

Reset and Clear now clears SRAM. Fixes some viruses but wipes out settings.

Dialogs accepting hex addresses now ignore leading non-hex characters.

Added two new vectors to the disassembly window.

Floppy disk titles (as shown in the status area) are now converted to CP932
in non-Japanese environments.

Added a menu item and accelerator (F1 when halted) to open the reference manual.

Added a defense mechanism against a common SRAM virus.

Headerless 2HS/2HDE images are now supported but they must either be formatted
or have the appropriate extension (.2HS or .2HDE) in order to be identified.
Otherwise they will be treated as 2HQ.

Swapped the meaning of '+' and Return for the disassembly window.

Lines in the breakpoints window will now be highlighted if the current PC
matches their address.

The "BAD" image format now supports a rare format which is truncated
at a sector boundary but includes a single-byte terminator.

You can now force an image's write-protection state by putting a substring
in the file name. "[W]" and "[R]" will force a disk to be writable or read-only
respectively. This allows you to keep images read-only at the file system
level for safety while still allowing certain programs to run correctly.

 Be aware that _any_ method of changing the write-protection state of D88 files
 can cause them to get modified upon ejection due to said state being stored
 in the header. Keep files read-only at the file system level whenever possible!

Drag-and-dropped disk images now accept modifier keys. See the manual.


Bug Fixes:

Fixed a write error when saving state with read-only D88 file(s)
when the D88 header is not marked write-protected. It was trying
to update the header during the state saving process.

Fixed a bug in the CPU core that could cause the program to crash.

Fixed a deadlock situation that can occur when fast floppy is enabled.

Double clicking a log window entry now works in pop-up mode.

Fixed the situation where the drive numbers sometimes end up missing
after turning the power off.

--------------------------------------------------------------------------------

	Release 8 (181104)

A Unicode version of the program (XM6U.exe) is now included. Please see the
manual for more details, but basically this version can work with filenames
using any mix of characters. The biggest downside is that state files are
not compatible when using this version.

File filters were updated to include extensions for 2HS/2HDE.

Dragged and dropped disk image modifier keys have been changed. See the manual.

The memory search dialog now retains the previous search string until the
memory window is closed. You can now use (Shift-)F3 in the memory window
to search forwards/backwards whether or not the dialog is open.


Bug Fixes:

Fixed the display of the Shift-JIS text in the TrueKey configuration.

Fixed the display of the Shift-JIS text in the Keyboard Mapping status bar.

Fixed CLI arguments when no path (absolute or relative) is specified.

Negative hexadecimal numbers are working again.

Corrected another CPU emulation bug, fixing a few games.

Fixed a bug where certain screen modes could stop the display from refreshing.

--------------------------------------------------------------------------------

	Release 9 (181224)

Archives (.zip format) can now contain up to 16 disk images, each of which
will be listed in the drive menu for easy swapping. The Unicode version fully
supports Shift-JIS filenames contained within archives. Be aware that only
the most common image formats are supported within archives.

Dragging and dropping a file while holding the Alt key will cause it to be
loaded into both floppy drives. This is most useful for files that contain
multiple disk images, in which case the second image will be loaded into the
second drive. As usual, you can hold Control to inhibit the automatic reset.

Drag and drop now attempts to bring the main window to the front.

Media menus (for multi-disk files) now persist after a software-initiated
disk ejection, giving the user an opportunity to select a different image.

Increased the max length of the MRU strings displayed in the status bar.

It is now possible to insert up to 4 floppy disk images at one time using
command-line arguments or dragging and dropping. It won't have any effect
unless the extra drives are enabled. See the manual for more information.

File filters now support the .2HE extension, although .2HDE is the proper form.

Added a defense mechanism against a rare SRAM virus.

Enter/Return in the memory window will allow you to edit the selected value.

Ctrl-Tab will activate the frame window when emulation is paused.


Bug fixes:

Corrected numerous FDD problems through original research.

Added a safeguard to keep long horizontal sync pulses from derailing scheduler.

Files larger than 2 MB could be misidentified solely due to their size.

The media menu enable state was sometimes getting set incorrectly.

The floppy status panes could sometimes show the wrong name.

FDD emulation is now more accurate but uses measurably more host CPU processing
power whenever floppy disks are being read/written unless Fast Floppy is active.

--------------------------------------------------------------------------------

	Release 10 (190207)

Controllers (such as joysticks) can now be emulated via the keyboard.

Up to four floppy drives are now supported. See the manual for details.

Floppy images are now cached when opened instead of being read piecemeal.

State saving will no longer fail partway if a modified disk image is read-only.

DIM files now support the maximum number of tracks permitted by the format.

Disabled the message box that warns of "bad" disk images.

Tweaked the PCG window a bit.

An experimental keyboard mode was added. The key bindings are subject to change.

The F12 accelerator was removed, allowing that key to be assigned to something
else by the user. The original functionality of toggling mouse emulation will
continue to work if F12 is left unassigned.

The right-side Control key now maps to the X68000's sole CTRL key unless the
user explicitly remapped it to some other key. This allows either Control key
on a modern keyboard to be used transparently.

You can hold Shift when opening the Software Keyboard window to move it outside
of the frame window, or as far as vertically possible without going off-screen.
Pop-up style windows are required for this to work. In the future, this could
become the default behavior when pop-up windows are enabled.

New menu items under the Help menu have been added for checking online for
program updates and downloading/updating/viewing useful notes about specific
X68000 games and programs. In order to utilize these new features, a special
package (available on the website) needs to be installed.


Bug fixes:

Additional FDD problems were corrected through original research.

Fixed a MIDI problem affecting a few games utilizing defective interface code.

Fixed a BG initialization bug that caused crashes under certain circumstances.

Fixed a few issues related to directories-as-images.

Shift-F10/APPS fixed for the PCG window. Won't work if masked by an accelerator.

F10/Shift-F10 menu accesses now work for memory and disassembly windows
as long as they are not masked by an accelerator.

Fast Forward is now disabled if its key (grave/tilde) is already mapped.

Fixed an unmasked regression causing glitches in status bar messages.

--------------------------------------------------------------------------------

	Release 11 (190704)

A Dynamic Memory Search window (e.g. for finding cheats) is now available.

Emulation of bus/address errors was improved. There are still some deficiencies,
such as the fact that PC address errors are not checked after branches, although
there is a workaround for that particular case if you really need it.

The Software Keyboard will now visualize controller inputs. See the manual.

The Software Keyboard now attempts to print Shift-JIS text on the status bar
in the non-Unicode version.

The Key Mapping dialog will now display a hex code for unrecognized keys.

Loading the same file multiple times sequentially via the command line will now
automatically select the second, third, or fourth disk image, where applicable.

A few keyboard commands now have equivalents that work when Num Lock is on.

Certain dialogs will now interpret their input as decimal if prefixed with '#'.

Floppy disk image insertion does not interfere with emulation as much anymore.

Insertion/ejection of headerless images (such as .XDF) is now much faster.


Bug fixes:

The analog Cyberstick throttle controls were broken for keyboard input.

The Software Keyboard was not as responsive as it could be, due to a bug.

The new input modes were interfering with the Key Mapping dialog.

Fixed the audio when returning from fast-forward mode.

--------------------------------------------------------------------------------

	Release 12 (190819)

Added an audio muting feature for FM/ADPCM - does not apply to MIDI.

The breakpoint-toggle command will now remove an active breakpoint without
needing an open disassembly window as long as the PC is on the breakpoint.

The basic search dialog for memory windows can now search for a single 16-bit
(or greater) decimal number prefixed with the '#' character. Previously it
only supported hexadecimal sequences and strings, which are more flexible.

Additional headerless 2DD images are now supported, namely the 640 KB format,
which is directly supported by Human if the dual-mode drive alteration setting
is enabled in XM6's options.

Headerless 2HS/2HDE images can now be created in the New Floppy Disk dialog.

Headerless 2HS/2HDE images are now supported within archives.


Bug fixes:

There could have been some stability issues in the previous release,
although no one reported any problems.

The MIDI volume slider now handles the case where support is indeterminate.

Fixed some minor issues in the FDD window.

Canceling the file selection dialog in the New Floppy Disk dialog was
nullifying the output name without any indication.

Headerless 2HS/2HDE image detection was failing for unformatted images.

--------------------------------------------------------------------------------

	Release 13 (190924)

If a floppy image cannot be found while loading a state file, a few additional
locations will be checked, including the same directory where the state file
is located. This does not apply to directories due to the greater likelihood
of two different directories having the same name.

Archives (.zip format) that have a filename or path containing characters from
outside the local code page will now work in the Unicode version. Note that this
former limitation did not apply to the filenames inside the archive, which have
always been treated as ASCII or Shift-JIS (in the Unicode version).

The breakpoints window has new menu items that enable/disable all breakpoints.

Holding Control while double-clicking in the breakpoints window will now toggle
the combined state of all breakpoints (biased towards disabling). I.e. if any
breakpoints are enabled then they will all be disabled, but if every breakpoint
is disabled then they will all be enabled.

When passing CLI arguments to an instance of XM6 which is already running,
relative paths will now be converted to absolute as long as the path exists.

Attempted to stop file dialogs from changing the current directory by adding
a flag. May help in some unusual scenarios. Note that this only applies to the
operating system's current directory, which is mostly irrelevant to the program;
XM6 uses an internal "default directory" that does not lock the path.

If the initial current directory matches the environment variable "USERPROFILE"
then it will be changed to the directory containing the program executable.
This typically only happens when XM6 is started by dropping one or more files
onto the executable. As with the previous change, this is usually irrelevant.


Bug fixes:

Fixed a bug in the CPU core that could causes crashes in rare circumstances.

Fixed several bugs (and a possible crash) related to the new bus error handling.

The MRU display of floppies in the root directory was broken (my fault).

Fixed a crash when invalid CLI arguments were passed (my fault).

SetCurDir() was removed for being broken and causing problems.

--------------------------------------------------------------------------------

	Release 14 (191029)

Improved FDD timings as needed by a few games.

Unicode (UTF-8) filenames in archives (.zip format) are now supported in the
Unicode edition as long as the corresponding flag is set. If it is not set,
filenames will be decoded as Shift-JIS or 7-bit ASCII.

The Unicode edition will now attempt to rename its .ini file after loading it
if found to not be in Unicode (UCS-2) format. This is being done to facilitate
converting ANSI/MBCS configuration files. The file will be rewritten on exit.

Revamped the search function. The most important changes are listed below.
- alignment option (may help eliminate false positives in certain situations)
- new messages will be displayed at the bottom of the frame window
- a few other ROM/RAM areas can now be searched (based on the starting address)
Please see the manual for full details.

--------------------------------------------------------------------------------

	Release 15 (191124)

The floppy panes in the status bar will blink yellow briefly if the floppy disk
image inserted into the respective drive was identified and determined to be
in the "wrong" drive. In addition, the recently-used floppy disk menus of the
"correct" drive(s) will be populated automatically; therefore, in many cases,
reinsertion into the proper drive may be as simple as pressing (Shift)-Alt-I.

Alt-I and Alt-Shift-I now select the next disk in a multi-disk file in addition
to their traditional function of reinserting the most recent floppy disk.

Holding the Delete key while selecting an item from an MRU menu (i.e. recently
used files) will remove that item from the menu. The same principle applies
to the cheat codes menu interface.

The kludging applied to system keys (viz. Alt, Windows) was improved. It may
be worth trying to map them now, but probably not for the Windows keys still.
You can test out the advanced kludging without changing your configuration
by activating Game Mode.

Unless mapped by the user, the Windows keys will attempt to be blocked while
in full-screen mode, in case they get pressed unintentionally.

The Alt keys now have mappings in Game Mode, making it somewhat useful now.
Holding Shift while entering Game Mode changes the mapping of Left Alt.

Double-clicking the display will toggle full-screen mode when not in Mouse Mode.

--------------------------------------------------------------------------------

	Release 16 (191212)

The Unicode edition can now load ANSI/MBCS state files. This includes state
files created by the original version of XM6 (versions 2.04 - 2.06 only).

When saving a state file, if the file already exists and was created by
a different edition (i.e. Unicode vs. MBCS) it will be renamed, if possible,
rather than overwritten.

If its .ini file is not found, the Unicode edition will now attempt to load
its configuration from a few alternate file names. It will still write out
its configuration using the proper file name. This is intended to simplify
upgrading to the Unicode version.

Icons will now appear in the floppy panes on the status bar for a few seconds
after a recognized disk image is inserted. The interpretation of the icons is
described in the manual. They can be disabled in the options dialog under the
miscellaneous page. This feature replaces and expands upon the drive blinking
used in the previous version of this program.

The best-guess game name will be copied to the clipboard upon opening the notes.
Thus, one can more quickly search the notes for applicable content. For example,
if Notepad is associated with text files, one would type Ctrl-F, Ctrl-V, Enter.

Holding Shift while selecting an item from a floppy disk MRU menu will now cause
the corresponding disk image to be inserted into the other floppy disk drive.

The mouse cursor will be blanked in full-screen mode after a few seconds of not
moving the mouse, unless emulation is paused.


Bug fixes:

Disk identification wasn't always working properly for files within archives.

The issue where clicking during mouse emulation sometimes interferes with
subwindows has been mitigated, although it is still possible to trigger it.

--------------------------------------------------------------------------------

	Release 17 (191230)

Preliminary support for cheats has been implemented.

Mouse blanking now occurs outside of full-screen mode as well.

Dynamic Memory Search windows are now excluded from the "all-CPU" commands.

Double-clicking addresses in Dynamic Memory Search mode now has limited support.

Holding Control or Delete while selecting a subwindow from the Window menu
will cause the associated subwindow to be closed.

An anti-tearing feature is now available under the View menu. It is not
recommended unless you are actually experiencing visual tearing.

Loading a multi-file archive into Drive 0 via a dialog will now automatically
load the second file of the same archive into Drive 1 as well. This feature is
unnecessary for the drag-and-drop case: simply hold Alt for the same effect.

Changing the executable name to XM6J or XM6E will force the language to be
Japanese or English respectively. You may need to copy and rename the .ini
file as well. Be aware that the results will not be authentic compared to
running on a language-specific OS.


Bug fixes:

Disabling ADPCM audio generation was causing certain software to crash randomly.

The joystick setup caption wasn't working properly in the English version.

Some missing strings were identified and translated.

CPU logging was broken in recent versions.

Certain 32-bit values were impossible to input into dialogs.

Disassembly window synchronization wasn't being updated after loading state.

--------------------------------------------------------------------------------

	Release 18 (200119)

Many of the floppy panes in the status bar now have user interface
functions utilizing the mouse. Consult the manual for details.

Files can now be dragged and dropped onto the status bar, too.

If the same file is being inserted into both drives with Ctrl-Alt-I, it will
now attempt to insert the second disk (if available) into the second drive.

Holding Control while selecting an item from a floppy disk MRU menu will now
cause the corresponding disk image to be inserted into both floppy drives.

Added a menu command to fill a range of memory with an 8-bit value.

Added menu keyboard mnemonics (A - P) for multi-disk files. There are conflicts.


Bug fixes:

The mouse wasn't unblanking in the full-screen status area.

The mouse would never unblank while a menu opened with the Alt key was active.

Fixed a few minor concurrency issues.

Saving state with the keyboard in Game Mode could cause accelerator keys
to get saved to the file in the depressed state.

In order to avoid sending extraneous key presses to the emulated X68000,
keyboard input is now ignored for a fraction of a second whenever menus
and dialogs close, with a few minor exceptions.

--------------------------------------------------------------------------------

	Release 19 (200308)

Cleaned up and expanded several HDD-related dialogs.

Expanded the abilities of the cheating subsystem slightly.

Added safeguards to prevent rapid display changes.

Switching to full-screen mode without changing the display is now "softer".

Hard disks can now be loaded more conveniently, such as through drag-and-drop,
without having to go through the cumbersome configuration dialog. This will
necessarily disrupt any existing HDD settings, however.

Command-line file arguments now accept modifier keys like drag and drop does.
For example, holding Control will now disable resetting when multiple floppy
disk images are inserted by dropping them onto a shortcut to XM6.

It is now possible to mix file types in the command-line and drag-and-drop
interfaces. For example, you can pass both a hard disk image along with its
corresponding boot disk or key disk image and expect it to work correctly.


Bug fixes:

Fixed external SCSI ROM support.

Fixed additional side effects of disabling ADPCM audio generation.

Fixed a crash when toggling speed limiting without an audio device (my fault).

It was possible to lock up the program by using certain invalid mnemonics
for hidden (but not disabled) controls in the rigid disk creation dialogs.

The mouse cursor was inadvertently being forced to appear when transitioning
into or out of full-screen mode (my fault).

Enabling full-screen stretch while already in full-screen mode was permanently
setting the screen resolution to 800 x 600 regardless of the original setting.

Switching out of DMS mode was not setting the scroll bar position correctly.

--------------------------------------------------------------------------------

	Release 20 (200428)

Major Update:

The Unicode edition now has more accurate graphics. The MBCS version still
contains the original graphics code, thus making it a sort of "lite" version.
This section only describes changes relevant to the updated graphics.

Stretching has been expanded and now also enables certain CRT effects.

The View > Win32 > Bitmap window was reworked. The most import new feature can
be found on the last line, where the effective stretching factors are displayed.
If you see additional numbers in parentheses, these are the actual stretching
factors, which only appear when meaningful.

A smoothing option was added. It makes the display look fuzzier but reduces
aliasing somewhat. It only takes effect when stretching non-integrally.

There are several new stretch ratios that can be cycled using the mouse wheel,
although stretching is limited to simply "on or off" in certain X68000 modes.
There does not appear to be a ratio that is ideal for every game, therefore
the available ratios are experimental and subject to change. Hence this setting
is not being saved in the configuration at this time.

Full-screen mode was revamped, although it will function mostly the same
as in previous versions if you enable the "Full Screen Maximum" setting.
(Scrolling the mouse wheel far enough while full-screen will also work.)

Scanline simulation is now available, although it only applies to certain
video modes and therefore has no effect for most games in their default mode.

Displaying certain visual effects properly requires significantly more
processing power than in the past; you may wish to try the non-Unicode
edition if your PC is no longer able to adequately emulate certain games.


Additions & Changes:

Audio is no longer disabled while saving state. Seems to help a little bit.

Altered the function of the Alt-L accelerator since it wasn't used much.

Clicking the labels in the Sound Buffer configuration group reverts to default.

Single-floppy insertion via command line no longer resets the virtual machine.

Resets initiated via CLI or drag-and-drop now unpause the virtual machine.

The CLI interface was expanded. The details are in the manual.

Pausing emulation is now delayed until the current frame finishes rendering,
except if it appears the user is doing something technical (e.g. breakpoints
are active, CPU windows are open, etc.) in which case it halts immediately.

An accelerator to advance to the end of the current frame is now available.
It can be pressed to single-step emulation, or held down for slow motion.

The MBCS edition can now load state files created by the Unicode version.
This feature was added because the MBCS version is now useful for regression
testing the updated graphics, which are only present in the Unicode edition.


Bug fixes:

Fixed an error in the way the CPU core processes interrupts.

Fixed the percentage displayed in the caption when toggling speed limiting.

Reduced the amount of visual distortion in some games when pausing emulation.

Mouse blanking is now disabled in full-screen mode if subwindows are open.

Holding Shift while activating an MRU keyboard mnemonic is now supported.

Fixed a spurious warning in the log, albeit not one that was normally visible.

Emulating a stopped CPU was taking an excessive amount of processing power.

Known unreliable virtual input devices will now be ignored.

The MFP device's internal data was not being initialized.

Fixed a few bugs related to search windows.

Alt-F4 was not working properly when the Alt key was mapped (as in Game Mode).

Fixed some issues with the kludging applied to the Windows keys,
although it is still recommended to use the Alt keys instead.

--------------------------------------------------------------------------------

	Release 21 (200524)

Sped up the insertion of some floppy disk images.

Pressing a button on a (physical) controller will now unpause emulation.


Bug fixes:

The previous Alt-F4 fix was itself not working properly.

Fixed a bug in the disassembly window's Follow Operand command.

Fixed a rare crash when loading state files under certain circumstances.

Manually entering odd addresses into the cheat dialog now sets the size to byte.

State saving/loading was unnecessarily interfering with Mouse Mode.

Delayed pausing was not working if the emulator couldn't get enough CPU time.

--------------------------------------------------------------------------------

	Release 22 (200606)

Added a quick-save feature (Alt-S). It is guaranteed not to overwrite existing
state files. It increments a serial number at the end of the filename each time.
It is recommended that you do a "Save As" before using this command, in order
to set the base filename. (You can even set the current serial number this way.)

The Screen Dump command now saves its output files in a more logical location,
and the filename is now generated in a similar manner to the quick-save command.

A few keyboard accelerators related to state loading were changed.

Added an accelerator (Shift-F9) that toggles the enable state of a breakpoint.

The breakpoint window now accepts keyboard input. See the manual for details.

Added new commands to the breakpoint window menu.

The Software Keyboard no longer receives keyboard focus when first opened if it
is the only window open. This makes it easier to access the frame window menus
using the keyboard. The Software Keyboard rarely needs to have keyboard focus
since it is normally interfaced using the mouse. Remember: it can be closed
at any time using the Alt-K accelerator whether or not it has keyboard focus.

Expanded the TRAP #0 dialog to accept 32-bit values. (The spinner control only
affects the lowest 16 bits, however.)

Cheats can now be applied to TVRAM and SRAM.

If an image for a mass storage device cannot be found, a few other locations
will now be checked. The configured path will not get updated automatically
if the image is found elsewhere, however.


Bug fixes:

Fixed a severe regression in the new sprite handler.

Fixed a source of rare crashes in the CPU core.

Accelerators and such were causing extraneous inputs in Controller Mode.

--------------------------------------------------------------------------------

	Release 23 (200728)

Optimized certain forms of track access for floppy disks.

State loading will no longer unnecessarily reopen a floppy disk image when it
is the same as what is already loaded (based on comparing the paths / indices).

In the configuration dialog, the MIDI reset command is now automatically changed
when selecting an output device if the device name contains certain substrings.

Added a means to follow the second address on the top line of the disassembly
window. See the manual for details.

Added a workaround for the "MT-32 Synth Emulator" MIDI device when accessing
it directly (instead of using it indirectly via the MIDI Mapper).


Bug fixes:

Fixed another regression in the new sprite handler.

Fixed a potential null pointer in the FDD state loading routine.

--------------------------------------------------------------------------------

	Release 24 (200927)

Reworked floppy image file name overrides ([W] and [R]) to be more flexible.
They now only affect the initial write-protect state upon insertion.

The frame-window caption now indicates if the no-wait-MPU condition is active.

Shift-Grave/Tilde now controls the no-wait-MPU option. Occasionally useful.


Bug fixes:

Fixed another regression in the new graphics code, this time palette-related.

Fixed a race condition when swapping disks in a locked floppy drive.

Fixed a source of data corruption in unusual but easily reproducible situations.

--------------------------------------------------------------------------------

	Release 25 (201027)

The axes for controllers are now assigned more intelligently.

POV-style controller inputs (e.g. directional pads) are now supported.

Controller input is no longer ignored while a menu or subwindow is active.

Most windows now accept at least a few keyboard commands, if they have focus.

The options dialog now reopens at the last page viewed previously.

The trackball option was disabled since it doesn't actually affect anything.

The Software Keyboard will now visualize mouse inputs.

The Software Keyboard will now display an actively repeating key in a color that
is slightly brighter compared to non-repeating keys. The LED keys are excluded.

After a reset, all depressed keys, except for an actively repeating key,
now have their state reset. This is technically inaccurate, since the key
release messages will not be sent whenever the keys are actually released,
but correctly emulating this aspect has no known use and causes misleading
information to be displayed in the Software Keyboard.

After a reset, new inputs are now briefly blocked from being registered.
Previously existing inputs, such as depressed keys, will not be affected.

Activating the frame window with the middle mouse button now enables Mouse Mode,
as long as the settings would permit such behavior under other circumstances.


Bug fixes:

Fixed some sources of error in the mouse emulation.

Alt-Ctrl-I (reinsert into both drives) was sometimes not working as expected.

Rapidly clicking keys in the Software Keyboard wasn't working well.

The Software Keyboard would sometimes open beneath other windows (my fault).

Blocked a few more minor extraneous inputs that were not being suppressed.

Input blocking wasn't working in Game Mode, to the extent it was applicable.

The Win32 Input window wasn't showing keyboard input when in Game Mode.

The pop-up style Win32 Input window wasn't showing keyboard input when in focus.

It wasn't normally possible to send CTRL+BRK to the VM via a physical keyboard.
The fix doesn't work properly under all circumstances; it is recommended to use
the Software Keyboard for sending CTRL+BRK instead, if the need arises.

--------------------------------------------------------------------------------

	Release 26 (201111)

Dynamic Memory Search (DMS) now has a mode for searching TVRAM.

The Alt-Y accelerator changed slightly; if a DMS window is already open,
it now switches focus between the frame window and the first DMS window.

Reworked the .zip archive handler to be a bit more flexible.

Floppy image write-protection overrides ([W] or [R] in the file name) for files
within archives are now checked using the actual file name, which has priority.
Previously only the archive file name itself was tested for such files.

Directory-as-disk images are now supported in the floppy pane interface.

Additional modifiers are now permitted when dragging and dropping floppy images.

Input is now blocked briefly after a drag-and-drop operation, so that the VM
will be less likely to detect qualifier keys.

If multiple state files are submitted through the command line or Drag and Drop,
they will now be loaded into the state file history list (maximum of nine).
This makes it easier to review older state files through the menu interface.

If multiple files are dropped onto a floppy pane, now only the first will
be loaded; the remainder will be added to the MRU history for that drive.

Formerly, dragging and dropping three or more disk images would load the third
and fourth images into Drives 2 and 3 respectively. This behavior has been
retained; however, you must now hold Alt while the files are being dropped
in order to enable it.

The Software Keyboard now displays key labels in hiragana if the corresponding
LED is lit, along with the zenkaku and kana LEDs.

The key translations intended to make text entry easier on English keyboards
are now replaced with an alternate set of translations when the kana LED is lit.
The alternate translations allow you to input kana characters directly, as if
using a Japanese typewriter. Unfortunately, there aren't enough physical keys,
so 'mu' and 'ro' can only be typed when Shift is depressed: use F, G, P, or ';'
for ro, and J, K, or apostrophe for mu. The space/blank key can be simulated
by holding one of the shift keys and pressing the space bar. (Note that this
mode is not recommended for most people; romaji mode should normally be used
when inputting Japanese text.)

Software Keyboard mouse visualization has been disabled, since it causes
distractions under certain circumstances without providing much benefit.
It will return when new forms of mouse emulation make it more useful.
In the interim, the Win32 Input window provides similar functionality.

Most windows now accept many more keyboard commands, if they have focus.

Expanded the Stack menus. Values that are more likely to contain valid addresses
are now marked; all 32 bits of unlikely values will also be displayed now.


Bug fixes:

The Alt-Ctrl-I fix in the previous release was implemented in an unreliable way.

Fixed several problems related to simultaneous floppy disk image insertion.

Fixed a harmless bug in the Software Keyboard introduced in the last release.

Reordered some cleanup code lest it could conceivably cause crashes on exit.

The Software Keyboard was not showing the small form of half-width katakana 'i'.

Activating the frame window with the middle mouse button was not enabling
Mouse Mode under certain circumstances.

--------------------------------------------------------------------------------

	Release 27 (201226)

Added two new mouse modes: Linear and Pointer. See the manual for details.

 Note that the new mouse settings are enabled by default and are also saved
 in state files. If you commonly use mouse-driven X68000 programs and are
 accustomed to the old behavior, or you fear change, you can disable them
 in the Options dialog under the Mouse page.

Attempting to activate Mouse Mode will now unpause emulation first.

The Auto Mouse Mode setting is respected in state files again.

The Software Keyboard now deemphasizes invalid keys when the Code Nyuuryoku LED
is lit. It also displays the full-width forms outside of Kana mode, too.

The SRAM setting for the gojuuon (aiueo) kana keyboard layout is now respected,
both in the Software Keyboard and in the input translations. In order to type
'n' or the handakuten mark, one must hold Shift and then either press F or G
for the former, or J or K for the latter. Use Shift-Space for the chuuten mark.

The Memory Dump / Fill commands now interpret the end address as the size
of the region to be saved if it is below the start address and as long as
the total size would not exceed the 24-bit address space.

Memory windows now have a menu command for saving a range of memory to a file.


Bug fixes:

Hopefully fixed the Mouse Mode subwindow interference once and for all.

Toggling scanline simulation was sometimes causing temporary graphical oddities.

Switching between tasks while full-screen wasn't working as expected sometimes.

Fixed a longstanding bug related to subwindow dimensions.

The key translations for mu in kana mode were not working well.

Alt-Space (open system menu) had side effects for certain windows (my fault).

Invalid mnemonics in a small number of menus could crash the program (my fault).

The borders between XF2 / Space Bar and XF5 / Zenkaku in the Software Keyboard
were inconsistent, causing minor display errors under certain circumstances.

--------------------------------------------------------------------------------

	Release 28 (210129)

Delta files for floppy disk images are now supported. Delta files record
changes to a disk image in a separate file, which is necessary for saving
modifications under certain circumstances, such as for images in archives.

In the past, XM6 would simply discard any pending changes that couldn't be
written to an image file, but now they will be saved into a delta file in the
same location as the image/archive. Please see the manual for more details.

If you prefer the original behavior, you can disable the creation of delta
files by opening any Floppy Drive menu, opening Delta Files, Default (initial),
and finally selecting the Discard option. Keyboard shortcut: Alt-1, T, I, D.
(Another, more drastic, method is unchecking the Enable Delta Files menu item.)


For consistency, all throttle controls are now vertically oriented.

Input devices with exactly three axes will now have their third axis duplicated
onto the missing fourth axis. This was done to increase throttle compatibility.

Holding Shift while selecting an item from a floppy disk MRU menu will now
also eject the disk (if currently inserted or queued) from the former drive
if it has the same path and is not a multi-disk image. You can still use
Control when selecting an MRU to insert the same image into both drives.


Bug fixes:

Certain analog joystick scanning patterns were not working.

Fixed a few problems that could only occur with the power switch off (my fault).

--------------------------------------------------------------------------------

	Release 29 (210206)

The key mapping dialog has been expanded. Furthermore, the usual kludging that
attempts to block the Windows keys is now applied during key assignment as well.

Added some kludges for Cyberstick buttons that couldn't actually be pressed.

CPU subwindows have new keyboard shortcuts for accessing registers. See manual.


Bug fixes:

Fixed a crash in the visual keyboard mapping window (my fault).

Fixed a bug related to remapping the Control keys (my fault).

Canceling the key mapping dialog was disabling controller input.

The visual keyboard mapping window was sometimes removing key bindings.

The fast-forward key was active in situations where it shouldn't have been.

--------------------------------------------------------------------------------

	Release 30 (210225)

The informational display shown in the title/caption bar is now configurable
through the View > Caption submenu. There are distinct options for windowed
and full-screen mode; the defaults now show less information in an attempt
to make things less distracting, particularly when in full-screen mode.

In addition, the caption is now capable of displaying indicators, such as the
state of the keyboard LEDs. This is enabled by default but can be turned off.

Be aware that the setting to turn off the informational display entirely will
be saved in state files, which is useful for games that abuse the keyboard LEDs.

Added a Save History setting. It may also be written as Keep History in places.

The no-wait VM/MPU options are now reset when the program is started unless
the new Resume Speed setting is enabled on the Resume page in the options.

Shortcuts that access the menu bar now also work for most pop-up subwindows.

Keyboard input is now (mostly) blocked after accelerator commands so one can
type accelerators as fast and sloppy as desired without sending extraneous
input to the VM.

Implemented a better keyboard translation for the Plus key.

Shift is now respected when selecting items from the media menu.

Automatic MRU population will no longer take the top slot if a disk is in the
corresponding drive, unless said disk is believed to be in the wrong drive.

Several items were moved from the Tools menu to more appropriate locations.
The most notable was the High Priority command, which is now in the File menu.
(You really should be using Alt-P for that one instead of the menu anyway.)

All relevant SRAM settings are now respected in the Software Keyboard. WYSIWYG!


Bug fixes:

Certain six-trigger Megadrive/Genesis scanning patterns were not working.

The Unicode edition Software Keyboard displayed wrong on Japanese installations.

Disconnecting the keyboard was not extinguishing its LEDs.

The "default directory" (basically the program's current directory) was not
always being set as one might expect on startup when using Resume settings.

Disk reinsertion commands (e.g. Alt-I) were behaving unexpectedly in certain
circumstances due to automatic MRU population (see the change listed above).

Shift-single-left-clicking a drive pane to move a multi-disk file to another
drive will no longer eject the source drive.

Key translations were mistakenly active during Code Nyuuryoku mode.

The setting to disable the informational display lacked an interface.

Fixed a few bugs related to subwindows that were minimized / hidden.

--------------------------------------------------------------------------------

	Release 31 (210620)

Alt-Backspace can be used to cycle through sequentially numbered state files.
For example, if state file "Example - 123.XM6" is active, it will load the
first file with a lower sequence number within the same directory. Hold Shift
to cycle forward instead. At the end of the sequence, it will attempt to load
a state file with the base name: "Example.XM6". State files with sequential
numbers are generated automatically with the Save Quick command (Alt-S).

The basic Atari-compatible joystick type now includes a third button which
is equivalent to pressing A and B simultaneously (sometimes called Button C).

The extended Atari-compatible joystick type now has some unofficial additional
button inputs mapped to the non-existent buttons numbered five through eight.
They are: A + B (5 and 6), U + D (7), and L + R (8). The latter two are simply
duplicates of the usual SELECT and START buttons.

Most of the shortcuts that open submenus of the main menu bar (Alt-F, etc.)
now also work even if the menu bar is not visible (as in full-screen mode).

A small number of unobtrusive default menu items have been added such that,
for example, one can now double-click the Tools menu to open the Options dialog.

The Make Floppy Disk command now tries to select the mount drive automatically.
TIP: You can press '0' or '1' to easily set the mount drive during the dialog.

Most address dialogs now accept relative numbers if prefixed with '+' or '-'.

Disassembly and memory windows now accept single addresses from the clipboard.

The breakpoints window now accepts multiple addresses from the clipboard.

Changed the way the end address for Save Disassembly is specified. It can now
be either the size (up to $10000) or the actual end address (inclusive).

Reduced the executable size by removing redundant resources.


Added new submenus that provide easy access to any relevant files in the local
directory. For example, after inserting a floppy disk image, you can open the
"Nearby Images" submenu under each of the Floppy Drive menus to select any
other floppy disk images within the same directory. This may be faster and
more convenient than using a file dialog or the Send To menu.

Another example involves state files: although the history list will show up to
nine recently used state files, it is not sufficient for reviewing large sets
of older files that are no longer present on the MRU list. But if you open any
state file and then select the "Nearby" submenu under the File menu, you can
access a practically unlimited number of state files in the same directory.

This concept was generalized to create the File Browser submenu, which provides
a menu-based interface for moving throughout the file system, showing all of
the relevant files in a particular directory. The Current Directory menu item
will rescan the directory, which is useful if files were added or removed.

 NOTE: This feature has no impact on performance unless you first open one of
 the relevant submenus. The directory will only be scanned the first time the
 menus are built, so subsequently opening menus will have no delays whatsoever.
 (Opening after changing the directory will cause them to be rebuilt, however.)

 In summary, if you are the type who is prone to fret about disk/memory impacts,
 (which are pretty minor even for directories with thousands of relevant files)
 simply avoid opening these new submenus and stop worrying. (Note that building
 the menus should be gentler on your system than opening a file dialog anyway.)


Bug fixes:

Inserting five or more images via the command line (including the Send To menu)
was causing crashes.

Alt-Space no longer opens the system menu of the main window if either of the
Alt keys are mapped to X68000 keys (as in Game Mode).

Certain 2HDE format disk images were not being identified correctly.

Additional FDD problems were corrected through original research.

Fixed a few problems related to files with ampersands in the name.

Fixed a few problems related to case sensitivity in file names.

The new Save History setting was not compatible with Resume State File.

The Clear History command now clears most paths, excluding those corresponding
to any currently configured SASI/SCSI drives.

The "default directory" (basically the program's current directory) was always
being written to the configuration file even if its Resume setting was disabled.
It was also not included in the Clear History command and Save History setting.

If the user did not type an extension in the save dialog when creating a new
floppy disk, no warning would be issued if the automatically appended extension
resulted in a file name that corresponded to an existing file.

The "default directory" was not being set correctly for directories as images.

The memory window couldn't modify 16-bit or 32-bit quantities at odd addresses.

The breakpoints window was accepting odd addresses.

Delta files for images built from a directory are now simply discarded if the
directory has changed since the delta file was created. Previously one would
get an annoying message, but such delta files are of low value.

--------------------------------------------------------------------------------

	Release 32 (210724)

Added new menu items under the Delta Files submenus that will insert a floppy
disk image and force it to be writable while preventing any changes from being
written back to the image file. This feature is intended for providing a simple
way to redirect changes to a delta file, but is still useful even if delta file
support is disabled (all changes will be silently discarded in that case).

If no state file is currently loaded, Alt-Backspace will attempt to load the
first item in the state file MRU list, whereas Alt-Shift-Backspace will now
attempt to load the first state file found in the local directory, if any.

If it can't find a plausible destination address to follow at a given location,
the disassembly window will now check the 32-bit value at that location and
follow it instead, if it seems plausible. Hold Control to force it to follow.

As a convenience, the registers window will now display up to 2 CCR flags.


Bug fixes:

The caption and status bar were not being updated while menus were open.

Fixed some bugs related to horizontal scrolling in the memory window (my fault).

Keyboard input is now blocked briefly whenever the program is activated.
This prevents the VM from receiving extraneous inputs in rare scenarios.

--------------------------------------------------------------------------------

	Release 33 (210930)

Inserting a multi-disk archive via the command line (e.g. the Send To menu)
will now also load the second disk into the second drive automatically.
This can be suppressed by explicitly specifying the drive (see the manual).

The disassembler now sign-extends negative quantities for the MOVEQ instruction,
which is arguably the proper way to display such numbers.


Bug fixes:

On certain systems, the GUI thread was not getting adequate processor time
when speed limiting was turned off.

Fixed several threading problems related to disassembly features (my fault).

Due to recent improvements, opening a subwindow menu started causing problems
with other parts of the program. Notably, activating Mouse Mode could fail.

The initial write-protect state for floppy disk images was not always being set
as one might expect when a delta file was loaded along with the image.

The use of relative CLI paths was sometimes interfering with other arguments.

--------------------------------------------------------------------------------

	Release 34 (211023)

Mouse Mode must be disabled in certain situations, such as when a menu or
dialog is open. This effect is now temporary; Mouse Mode will be restored
automatically when appropriate.

For example, you can now press Alt-1 to open the second FDD menu, change disks,
and then go right back to interfacing with your emulated X68000 using the mouse.
Previously you would have needed to reactivate Mouse Mode first.

Another example: while Mouse Mode is active, press Alt-K to open the Software
Keyboard window, click whichever keys you want, then close the window with
Alt-K (or the mouse or whatever). Mouse Mode will be reactivated automatically.

This change only affects users who make use of certain keyboard shortcuts,
as there is no other way to trigger the effect when Mouse Mode is active.


N-88 BASIC (or N88-BASIC) floppy images are now supported.

2HCE floppy images are now quasi-supported. They are treated like 2HQ images.

Automatic MRU population is now less aggressive about taking the top slot.

Certain UI aspects of drive locking are no longer simulated since they were
more obnoxious than beneficial, in the main.


Bug fixes:

Spurious controller inputs were sometimes occurring briefly after starting.

Fixed a track offset calculation bug for the DIM floppy disk image format.

Automatic MRU population overwrote the wrong history slot in certain situations.

Holding Shift while making a selection in the media menu was not populating
the other drive's MRU.

(Re)inserting an archive containing a single disk image into both drives was
not behaving consistently compared with other kinds of floppy disk images.
This correction does not apply to the old zlib interface, which is no longer
being maintained.

--------------------------------------------------------------------------------

	Release 35 (211107)

Bug fixes:

The Volume page of the configuration dialog was sometimes corrupting memory.

Clicking the non-client parts of the frame window with the middle mouse button
was not enabling Mouse Mode (except in rare situations not worth mentioning).

The new Mouse Mode restoration feature had numerous problems, some obscure.

--------------------------------------------------------------------------------

	Release 36 (211223)

Taking a screen shot while running should now be much less disruptive to the VM.

The VM is no longer halted during floppy disk image creation as I cannot see
any reason to do so - the bottleneck, if any, is likely disk I/O, not the CPU.

Similarly, HDD creation no longer halts the VM. You can now listen to emulated
X68000 music while waiting for your huge virtual SCSI drive to initialize.

Mouse-button input is now blocked briefly after activating the client area
of the frame window with a mouse click if Mouse Mode is being restored.

There are new breakpoint-related keyboard commands, as documented in the manual.


Bug fixes:

Various "run to" commands could fail if the log window was open and a large
number of log entries occurred between updates. The reason is quite esoteric.

Fixed a few hypothetical problems where delta file changes for floppy disks
might not carry over if the same image was inserted into a different drive
without hard ejecting it first (soft ejection was not sufficient).

Fixed a number of unlikely problems with disk images being (re)inserted while
being written to (by the VM). All were caused by optimizations I added.

Eliminated a possible data integrity issue when reinserting an image that had
been modified but hadn't yet written out the changes. (Not my fault this time.)

When moving a currently inserted floppy disk image from one drive to another,
the disk wasn't being ejected from the source drive under certain conditions.

Certain keyboard commands (such as Alt-F4) were not functioning for the
Software Keyboard window when emulation was halted (my fault).

--------------------------------------------------------------------------------

	Release 37 (220123)

The 7-Zip library (7z.dll) is now supported. Said DLL is now included with the
latest version of the DLL Package, which should be automatically re-downloaded
and extracted during the normal update process. In addition to enabling support
for .7z archives (and a few other types), the 7z interface also supplants the
old zlib interface for .zip files (although it will still be used as a fallback
in case 7z.dll is unavailable.) The new interface includes better technology,
such as archive caching.

The floppy drive LED panes now turn yellow while a disk is being written to.

If Control is depressed while selecting a MIDI reset command in the options,
the selected reset command will be issued to the device. (It will not account
for unapplied changes to the output device, however.) Double-clicking also has
the same effect.

Clicking the text on either side of MIDI Input/Output Delay in the options
will now toggle the value between its default and minimum.


Bug fixes:

DirectDraw was sometimes being initialized unnecessarily.

MIDI output data was getting lost under certain circumstances.

A certain (valid) MIDI command was being issued, probably unnecessarily,
that was causing the MIDI interface for the on-board synthesizer engine
of sound cards from a particular manufacturer to stop outputting sound
until the device was reopened. (The X68000 itself is not prohibited from
sending such messages, although it probably doesn't happen in practice.)

Game name detection (as used with the notes files) had some weaknesses.

--------------------------------------------------------------------------------

	Release 38 (220213)

The MIDI tab in the options now checks for MIDI device changes when opened.

Dynamic Memory Search (DMS) windows now have clipboard support.


Bug fixes:

Post-dialog input blocking had some holes in it.

The previous fix for MIDI data loss was faulty and caused additional problems.

The MIDI handler is now more resistant to side effects from loading state.

--------------------------------------------------------------------------------

	Release 39 (220320)

The default MIDI output delay is now 20 ms. That was formerly the minimum value;
you can now go even lower, but it may increase jitter slightly and will decrease
performance a little bit, particularly for single-core systems.

As a compatibility kludge for a buggy MIDI driver, more safeguards were removed.

The parity-circuit option is now off by default because it is only used for
SxSI support, which is an expert-level feature. Consequently, the SxSI drive
configuration page is disabled by default. This actually increases usability.

If the X68000 attempts to set the baud rate to the MIDI standard of 31250,
and it is unsupported, the COM handler now falls back to 38400 automatically.

The Menu-Based File System Browser can now rename files (hold F2).

Turning off the status bar now produces a small performance boost.

Added a "quick" breakpoint dialog. It preloads the address from the clipboard
(or the previous entry), and it also does not require emulation to be halted.

Breakpoints can now be manipulated while the power is off.


Bug fixes:

The MIDI output module had a serious timing flaw.

COM port conflicts between RS-232C and TrueKey are now handled better.

If the right mouse button was depressed at the moment when emulation halted
(e.g. due to a breakpoint triggering), context menus could open unexpectedly.

Small audio buffers were not working well.

--------------------------------------------------------------------------------

	Release 40 (220419)

Added a feature to redirect RS-232C MIDI (RS-MIDI) to a local MIDI device.
Both standard ("board") MIDI and serial MIDI can be used simultaneously,
which is needed to fully support a particular game. The manual now contains
an entire section on configuring MIDI, including RS-MIDI, but the new page
in the options dialog should be intuitive and mostly self-explanatory.

Decluttered the primary options dialog and added additional menu items that
open dialogs with categorized settings pages, including one with all pages.
If opening a submenu is too strenuous, one could also hold Shift while
selecting the original Options menu item to see all the option pages.

Rewrote much of the English help text displayed in the options dialog.

All changes made on the Sound page in the options now take effect immediately.
Hit OK to save the changes or Cancel to undo them.

The key names (as shown in the software keyboard window) are now easier to read.

Added a non-persistent setting to load state files with emulation halted.

It is now possible to copy the contents of bitmap subwindows to the clipboard.


Bug fixes:

Fixed a number of problems related to resizing bitmap subwindows.

Fixed numerous user-interface issues in the options dialog (some my fault).

Fixed a race condition on the MIDI options tab in certain situations (my fault).

--------------------------------------------------------------------------------

	Release 41 (220530)

Historically, XM6 has underclocked its CPU by 2-3% without any documented
explanation. The clock rates have been increased to match their nominal values.
This is only likely to improve compatibility, but if you suspect a regression,
you can compare it with the MBCS edition, which still has the underclocking.

 NOTE: SRAM residents INFO.RAM & CH30.SYS might be impacted (not investigated).

The only exception to the above is that the old underclocked value for the
17.4 MHz setting has been retained, because it was actually pretty close
to the (unconfirmed) actual speed of the XVI model (16.67 MHz).

You can now redirect quick screen dumps to the clipboard by holding Shift.

Memory windows now have a Copy submenu with numerous choices.

Alt-N (formerly an alternate for Alt-F11) now hides/unhides processor windows.
It will still open the processor windows initially, but the only remaining
accelerator that can close them is Alt-F11. The distinction is slight.

The RAM Insert command also loads/relocates executables (.X and .Z) now.
For relocatable executables, you may specify a full 32-bit address to be
used in the relocation process. Certain information is also logged.

As an optimization, state file operations no longer request file modification
times from the file system because that feature was never actually used.


Bug fixes:

The Wait Cursor was not being displayed (as is customary) during potentially
time-consuming operations done in conjunction with recently added features.

--------------------------------------------------------------------------------

	Release 42 (220630)

The warning dialog for unsaved state files has been reinstated but will only
be displayed under certain conditions: the setting to resume the previous state
file must be enabled, and at least three seconds must have passed since the
state file was last saved/loaded.

Active cheats are now applied every emulated millisecond regardless.


Bug fixes:

RS-232C MIDI (RS-MIDI) was not working for several games.

The default RS-MIDI reset command should have been GS.

The old, officially unsupported zip file handler was too aggressive about
trimming in-archive paths; certain valid sequences could have been affected.

--------------------------------------------------------------------------------

	Release 43 (220717)

Corrected several problems for both board MIDI and RS-232C MIDI (RS-MIDI),
none of which were my fault.

--------------------------------------------------------------------------------

	Release 44 (220813)

Compressed state files can now be loaded. (You must compress them yourself.)

 Tip: When you've finished playing a particular game, compress all the state
 files from said game into a single .7z archive using 7-Zip. The resulting file
 will most likely be very small. Whenever you wish to replay the game, load the
 archive. You can then cycle through the states with (Shift-)Ctrl-Backspace.

State saving has been optimized by first saving state into a RAM buffer before
writing it to disk. This was done to minimize the interruption to the VM.
The buffering will only be done if the system is not under memory pressure.

Similarly, state loading also delays halting the VM until the state file has
been cached (memory permitting) although the benefits are largely illusory.
This was done to keep the experience consistent with in-archive state files.

Context-sensitive help for menus was expanded to support the top level
of pop-up menus (i.e. any menu item that opens a submenu). Not all menus
have help strings yet, however.

A slight fade effect is now applied to green floppy pane LEDs, for realism.

A workaround for a bug in the IPL ROM was added. Now, 12 MB of RAM should
no longer cause the X68000 to crash under certain circumstances while booting.
This fix is inapplicable to previously existing state files with 12 MB of RAM.

A workaround for SCSI ROM dumps that lack magneto-optical drive (MO) support
(which is most of them) was added. It should not impact software SCSI drivers.

It is now possible to change the current directory using the Control key
in conjunction with drag-and-drop and CLI interfaces. Refer to the manual.


Bug fixes:

The floppy pane LEDs, when blinking, were susceptible to beating if the VM was
being fast-forwarded. The mitigation has not yet been added to the MBCS edition.
The drive number is also retained on dark blinking cycles in windowed mode now,
which was not necessarily a bug. (Full-screen mode was not changed.)

The no-reset CLI argument is now ignored on startup because it can interfere
with updating SRAM switches for HDD images passed on the command line.

When selecting a directory through a dialog, the directory modification date
was being updated due to the OS creating a test file, apparently.

The radix for imported cheats was often being misinterpreted.

The disassembler had a few defects.

--------------------------------------------------------------------------------

	Release 45 (220903)

Screen shots are now saved in PNG format.

 In addition to saving disk space, PNG output should also be faster. However,
 if you don't want PNG files for some reason, you can temporarily change the
 default by opening the Tools > Screen Save dialog and then selecting the
 Bitmap filter. You can also disable PNG support entirely by removing ZLIB1.DLL

A backup, in-memory state file is now made prior to resetting, whether or not
initiated by the user. The Undo menu item can be used to load this state file.
A dialog will provide more details along with an opportunity to cancel.

(Partly for historical reasons, XM6 sometimes unilaterally resets the VM in
response to user actions, such as simultaneously inserting two floppy disks.)

In addition to resets, the above backstop also applies to a few other events:
turning the virtual power switch off or pressing the Interrupt button.

 Warning: The above feature is only intended to revert accidental losses.
 Do not abuse it for other purposes; the undo command will only be available
 for a few minutes at most. (If you need more time, pause the emulator.)

The Alt-F5 accelerator was removed so it can potentially be repurposed in the
future. There remain three other keys that have the same effect when qualified
with the Alt key: F12, B, and Pause/Break.

The breakpoints window menu now has a new option (not saved) to retain the
current set of breakpoints whenever state is loaded.

You can now double-click an interrupt vector number to... ah, whom am I kidding?


Bug fixes:

Cheats for bytes at even addresses were being exported ambiguously.

Unpausing emulation by pressing a controller button had some deficiencies.

Simultaneously loading a state file and multiple floppy disk images no longer
causes an automatic reset (which would discard most of the state just loaded).

Mouse blanking is no longer blocked by minimized/hidden subwindows.

Input rejection for several state-loading accelerators was recently broken.

Under certain highly contrived circumstances, it was possible for the VM thread
to lock out the GUI thread completely.

--------------------------------------------------------------------------------

	Release 46 (221031)

Menus were cleaned up a bit. Note that Dynamic Memory Search was NOT removed;
it was simply renamed and relocated to the Debug and Help menus. Please also
consult the manual regarding the Tab mnemonic if you like keyboard shortcuts.

A mark is now added to the relevant menu item if notes are known to be
available for the current game or other piece of software. Be aware that
the lack of a mark is not conclusive.

The dialog for state file saving ("Save as...") now suppresses the .XM6
extension to make typing or changing a file name easier. It is no longer
necessary to append .XM6 to the file name, but it is tolerated.

In addition, if you hold Shift while selecting "Save as...", or use the
new Alt-Shift-A accelerator, the active state file, if any, will not be
disturbed. This is useful for mixing named state files with quick saving;
you can name a particular state file without interrupting the sequence.

Certain files are now created/deleted faster! It's actually illusory though.

The cheat type "Logical EOR" (one-shot only) is now available.

Double-clicking "Add as New" now adds the cheat and closes the dialog.

These floppy image types are now supported within archives: .2HC .2HCE .2HQ

For completeness, the floppy disk creation dialog now also supports .2HC format.

The Reset and Clear command now also resets breakpoint counters.

You can now hold Control while selecting a vector menu item to set a breakpoint.

If applicable, the boot address in SRAM for SCSI ROMs is now converted when
switching between Internal and External SCSI so that the VM won't crash.

The workaround for SCSI ROMs that lack magneto-optical drive (MO) support now
applies to an additional ROM dump. It should not impact software SCSI drivers.

The CG-ROM generation portion of the old XM6 utility program has now been
integrated. If the CG-ROM warning in the advanced options is enabled and
neither CGROM.DAT nor CGROM.TMP are present, a new dialog will now appear
asking if you wish to attempt to generate CGROM.TMP (using certain fonts
that may be installed on your system). In the event of an unrecoverable
error, it will leave an empty CGROM.TMP as a flag to not try it again.

The SCSI ROM generation portion of the old XM6 utility program has now
been integrated. You can find it under the Tools menu. The replacement
ROMs come with caveats, being unofficial, but they seem to work and also
appear to have better compatibility with virtual magneto-optical drives.
(This problem has been at least partially kludged for the "real" ROMs.)
The Human68k v3.02 disk image is needed in order to synthesize these ROMs.


Bug fixes:

Added a kludge - restricted to a single game - to fix terrible sounding audio.

The Volume tab in the options was undoing your speaker panning, if any.

Increased the size of MIDI message buffers for Korg M1 support, hopefully.

Game name detection (as used with the notes files) had some more weaknesses.

The Undo command should have also restored the VM path.

XZ-compressed state files renamed with the .XM6s file extension weren't working.

Files deleted through the menus should have also been removed from the history.

Fixed several bugs related to error dialogs (my fault).

Fixed several bugs related to the disassembly window (some my fault).

The break flag was not getting cleared after tracing a single instruction.

The headerless 2HC floppy format (.2HC) was not listed in the file filters.

Due to an ID resource conflict with MFC, the maximum number of browser menu
items has been reduced from 10000 to approximately 7000, which is still more
than enough for any realistic scenario.

When coming out of Mouse Mode to open a menu-bar menu (via an accelerator),
whichever menu item (if any) was underneath the mouse was getting highlighted.
This caused mnemonic keys to behave unexpectedly in certain situations.

Added crash safeguards for when garbage values are written to certain registers.

Increased the 10 MHz clock rate by 0.2% to fix a doujin game.

--------------------------------------------------------------------------------

	Release 47 (230228)

Controller Mode (which allows you to operate virtual X68000 input devices,
such as joysticks, through your keyboard) is now enabled automatically for
qualifying software. By default, it will not activate if you have real
game controller devices connected and configured. You can disable this
feature temporarily or indefinitely through the Tools menu.

Most automatic resets (particularly the ones initiated by inserting multiple
floppy disk images simultaneously) are now disabled by default, due to the
fact that they can be unexpected. (Many users forget that they can undo an
undesired reset event.) The setting to revert to the classic XM6 behavior
is found on the Misc tab under Tools > Options.


Bug fixes:

Corrected several FDD problems through original research.

--------------------------------------------------------------------------------

	Release 48 (230331)

(This document formerly contained a list of bugs / deficiencies at the bottom,
but it wasn't very useful and rarely changed. The two remaining items were
moved to the manual instead.)

You can now use Alt-F5 to save state temporarily, and Alt-F8 to reload it.
This state "file" is kept entirely in memory and is therefore lost when
the program ends. This feature is useful when you want to save and reload
state without leaving behind a file that you don't intend to keep. It does
not interfere with the usual state file apparatus (Alt-S, Alt-L, etc).

When you use the Save As command to create a state file, the VM state is now
saved as soon as the command is invoked. (Previously it would wait until the
file dialog ended, but this could end up being several seconds later and the
VM thread continues running while dialogs are in progress.) This improvement
is accomplished by saving the state to RAM and then writing it out after you
enter the state file name. If the dialog is canceled, nothing is written.

(Although the two features mentioned above are accomplished the same way,
they do not interfere with each other.)

Save As now permits saving compressed files (*.XM6.XZ). This is intended for
situations where you only intend to create a single state file but still want
the benefits of LZMA compression. The Save command now also recompresses when
saving over a file with the appropriate double extension. Be aware that the
MBCS edition is unable to save compressed state files, due to its requirement
to produce state files that are (mostly) compatible with the original XM6.


Bug fixes:

The key translation for American keyboards was improved to reduce inadvertent
input when releasing the Shift key. For example, typing : sometimes produced
:; on the VM side. This problem still occurs for certain combinations when
the little-used kana mode is active (refer to the entry for Release 26).

--------------------------------------------------------------------------------

	Release 49 (230430)

The routines related to the text-based configuration file (XM6.ini) were
rewritten and are now significantly faster. The file will also no longer
be overwritten if the contents are identical. It was also reorganized
slightly in order to make it easier to navigate. Finally, both editions
of the program can now read each other's configuration files with the
caveat that the MBCS version may not convert all the paths properly.

Any floppy images marked with the [m] tag (meaning modified) are now forced
to be treated as writable even if the image file is read-only. This has the
same effect as applying the [W] tag, which means that [W] is now redundant
in file names for modified images and can be removed from them.

 Note that the above feature does NOT put any read-only images in danger of
 being modified! Overriding read-only image files always causes any changes
 to be redirected into a delta file, as described in the manual.

The OS Info window (View > Win32 > OS Info) now shows additional information
about processor extensions. In particular, SHA Extensions (shown on the last
line of the window) could be used to improve performance but do not seem to
be widely available at this point in time.

Removed the automatic SASI HDF filename population. Its only purpose was
to facilitate upgrading from an extremely old version of the program.


Bug fixes:

The program was not ending quickly on certain systems.

If a compressed state file was loaded, saved over, and then reloaded,
the cached copy of the original state file would be loaded instead.

If the Save History setting was disabled and Resume Current Directory
was enabled then the latter would not work as intended.

The default RS-MIDI output device was not being set if the configuration file
did not already exist.

--------------------------------------------------------------------------------

	Release L (230530)

The Num Lock LED now retains its state when it is being used as an X68000 key.
(By default, Num Lock is mapped to the CLR key.) In other words, if you press
Num Lock, and it is interpreted as an X68000 key, the LED will revert to its
previous state after a fraction of a second. The LED will still toggle as usual
within dialogs and similar contexts. If you dislike this feature, remap CLR
(key 3F) in the keyboard settings to any other key, or remove its mapping.

 The above feature can fail, but it only happens rarely and certain keyboards
 never seem to have an issue. The problem is unlikely to occur during typical
 usage of the emulated CLR key. If it does fail, you can toggle the LED back
 to your preferred state by holding Alt and pressing Num Lock.

For consistency, the default directory is now set to the current directory at
the time the program starts, unless the current directory is someplace stupid.

The disassembler now flags a number of encoding errors that are ignored by the
68000. These typically arise when data is misinterpreted as instructions, but
can also be due to assembler bugs or the use of modes exclusive to newer CPUs.

The disassembly of bit manipulation instructions (BCHG, BCLR, BSET, and BTST)
now displays the bit number in decimal form, which is generally more useful.
The number is also masked to indicate how it will be interpreted by the CPU.
If the original bit number was too large, one or two question marks will be
appended, the latter being the case if it exceeded the legal 8-bit range.

SWAP was being disassembled with a .W extension, which could be misleading.
The extension is now omitted. (It swaps word-sized halves of a long-word
register, and the condition codes are set based on the 32-bit result.)

Some efficiency improvements were made concerning file I/O.


Bug fixes:

Certain configuration items were being updated even when unused. Now that the
configuration file is only updated if different, this caused unnecessary writes.

Automatic Controller Mode wouldn't activate for certain unusual configurations
if the Prefer Real setting was enabled, which it is by default.

Fixed a few minor decoding errors in the disassembler. It will still blithely
decode many invalid combinations, however.

MOVE to/from CCR was being disassembled with a .B extension which is just wrong.
(The CCR is 8-bit -- 'tis true! -- but these two instructions are word-sized.)

--------------------------------------------------------------------------------

	Release 51 (230629)

Disassembly windows now have an integrated 68000 assembler for convenient code
patching. Each window has its own undo/redo buffer. You can also inject data
by inputting hexadecimal values as long as they don't conflict with mnemonics.

The assembler is pretty lax when it comes to syntax; both "old" and "new" forms
will work, as will many abbreviations. A number of mnemonics from other CPUs
will even be recognized, although the operands must still be in 68000 format.
Please refer to the documentation for the stand-alone version of the assembler
for full details on syntax and special features.

Some efficiency improvements were made concerning file I/O.

SSE4 will now be used if available. If this program has started crashing,
please report it via email - it should be fixable but only if you report it.
(The hypothetical crash could be due to misidentifying supported CPU features.)


Bug fixes:

The Num Lock LED improvement was not active in Game Mode.

A few more configuration items were found to be updated even when unused.

--------------------------------------------------------------------------------

	Release 52 (230731)

Controller Mode (which allows you to operate virtual X68000 input devices,
such as joysticks, through your keyboard) now shares rapid-fire settings
with Device A (Tools > Options > Joystick > Setup). Note that you can still
configure it even if you do not have a Device A. See the manual for details.

Controller Mode now accepts num-pad keys 1, 3, 7, and 9 as diagonals,
except when emulating Cybersticks; in that case those keys are used
for the throttle axis.

Automatic Controller Mode is now disabled for the remainder of the session if
you turn Controller Mode back off manually after it turned on automatically.
It should rarely be necessary to do that, but in such cases it will now stop
turning back on even after you reset the VM.

In the above case, you can restore automatic mode by removing the check mark
from the menu item "Tools > Input Settings > Off Temporarily" but you might
find it easier to simply restart the program (Off Temporarily is not saved).


The Game Mode menu item was removed, but Game Mode can still be enabled with
the Alt-G accelerator (with or without Shift). (Automatic Controller Mode has
mostly supplanted Game Mode.) If you dislike this, please submit your feedback
via email.

Any changes to the button settings for controllers are now applied immediately.
Most usefully, this affords instant feedback when adjusting the rapid-fire rate,
but you can also see what each button does in-game if the windows are arranged
appropriately. The Software Keyboard window can also be used for feedback.

The Interrupt item under the File menu is now marked if it might do something
interesting. (If something bad happens, choose the Undo menu item under File.)

Temporary state files (Alt-F5 and Alt-F8) are now lightly compressed in RAM.

Some numerical dialogs in the Unicode edition now understand full-width input.


Bug fixes:

Added a kludge for a specific software synthesizer that will never be updated
to support certain MIDI messages required by actual X68000 software.

Two analog-mode Cyberstick buttons were not shown in the Software Keyboard.

--------------------------------------------------------------------------------

	Release 53 (230820)

This release introduces the Meta key feature which, when used in conjunction
with Automatic Controller Mode, makes Game Mode practically obsolete.

The Meta key behaves like a new type of qualifier key (such as Shift) intended
for pressing X68000 keys that are only occasionally needed (e.g. Touroku).

While the Meta key is depressed, the keyboard layout temporarily changes,
so you can, for example, press Meta-H to simulate toggling the Hiragana key
or Meta-F3 for XF3. Please see the manual for complete details and a list
of key translations.

Investing a small amount of effort into learning this feature will frequently
save you the hassle of opening the Software Keyboard window or switching input
modes. Every X68000 key should now be pressable on full-size English keyboards.


The Shift keys can now be mapped independently. If one is mapped to SHIFT and
the other is unmapped, both will function as X68000 SHIFT keys (this behavior
is identical to the way the Control keys map to the X68000 CTRL key.) Note that
if one or both Shift keys are mapped to any non-SHIFT key, the key translations
used for English keyboards will be disabled. (That caveat is not new.)


Bug fixes:

Switching the disassembly search mode from binary to text could cause the
search to fail.

--------------------------------------------------------------------------------

	Release 54 (230929)

The configuration file (.ini) is now saved in UTF-8 format, which reduces
the size in typical cases. The non-Unicode edition still uses the local
code page, although it can now read UTF-8 configuration files.

If the audio buffer starts getting overrun (due to fast-forwarding) the output
volume will be reduced. Note that it will take a fraction of a second for the
buffer to overflow when fast-forwarding begins. Until then, the audio data is
still good and will be played at normal volume. This might make it seem like
the audio latency is longer than it really is, or that fast-forwarding isn't
responding right away, but it's just a side effect, and it makes brief periods
of fast-forwarding less jarring. When coming out of fast-forward, all the bad
data is still flushed from the audio buffer immediately, as usual.


Unformatted disk placeholders (I hesitate to call them "images") are now
officially supported. Placeholders are empty files (size of 0) with the
extension ".unf" and they represent disks with no low-level formatting
whatsoever. They can even be created through the New Floppy Disk dialog.

Such files might seem useless, but I use them frequently for testing how
user-disk creation modes behave. The results of formatting are captured
in a delta file (documented elsewhere), and any kind of exotic formatting
can be represented therein, even low-density (2DD) formats.

As an expert-level feature, placeholder files are not given all the rights
and privileges of true images.


Bug fixes:

Toggling the temporary-disable flag for Automatic Controller Mode could cause
unexpected results in rare situations. Several other issues were fixed as well.

Fixed an embarrassingly stupid crash of my own making.

--------------------------------------------------------------------------------

	Release 55 (231026)

The meta-key feature, introduced a few months back, now has key translations
that simulate mouse buttons. Please refer to the meta-key table in the manual.

These translations can be helpful if you don't know whether a piece of software
supports/requires mouse input. After all, pressing a few keys to simulate mouse
clicks can be more convenient than grabbing the mouse, activating Mouse Mode,
pressing buttons, and then deactivating Mouse Mode if there is no response.

The Software Keyboard mouse visualization feature has now partially returned
in order to help provide feedback for the above feature. Only mouse buttons
are visualized. (Directional deltas are too distracting for regular use.)

The breakpoint menu now shows the actual numbers instead of sequential numbers.


Bug fixes:

Breakpoints were unreliable under certain circumstances.

--------------------------------------------------------------------------------

	Release 56 (231124)

State files now have run-length encoding (RLE) applied when saved to disk.
Under realistic circumstances, this significantly reduces the file size.
(Its design precludes expansion.) Furthermore, RLE-compressed state files
often save and load faster due to their smaller size, but even in cases
where they don't, the increase is on the order of milliseconds and not
likely to be noticed. Finally, this particular implementation of RLE
is designed to be recompressible so that state files can subsequently
be archived (as by 7-Zip) with only a minor increase in size.

                       What this means for you...

State files now take up less disk space.

If you are already in the habit of archiving/compressing your state files,
simply use the new menus (under File) to configure how heavily the RLE will
be applied. The default was chosen under the assumption that most people
won't bother; it favors reducing file size but doesn't hurt recompression
too much. You should use a lighter setting to improve recompression.
Remember: you can still load state files from within a 7-Zip archive!

As for the rest of you, "I have _begged_ you to install 7-Zip!" (Too obscure?)

But if you absolutely refuse to save many megabytes of space by archiving
your state files, you can at least use the heaviest RLE setting to make your
state files significantly smaller. They won't recompress very well but it's
still better than nothing.

 If you're worried about the risk of data loss when using a custom compression
 scheme, fear not! This RLE implementation is done in a single pass and it
 calculates a CRC value of the original data en passant. If the reconstituted
 data does not match the original, loading the state file fails. Because this
 never happens, absent intentional corruption, you can be assured that your
 data is safe. It has been tested for months internally, and the debug version
 goes so far as to double-check the CRC and immediately decompress it into RAM.
 Also, temp state files (Alt-F5/F8) used RLE so you may have tested it already.

Some more advice: quit the program or use Reset and Clear when switching games.
This clears out the VM RAM, so RLE will perform better. (This also improves
compression generally; the effects just aren't as obvious without RLE.)

The MBCS edition does not apply RLE to state files for compatibility reasons.

The manual has additional information and details about the RLE implementation.

--------------------------------------------------------------------------------

	Release 57 (231221)

The program now starts up slightly faster.


Bug fixes:

Formerly, audio recordings were vulnerable to subtle distortions, but this has
(hopefully) been eliminated. For example, pausing emulation during recording
or starting recording immediately after loading state were causing corruption.
Furthermore, the audio was randomly stretched/contracted by a few milliseconds.

As a side effect, you might hear occasional audio glitches only while recording
is in progress, but the .WAV file that is actually produced will be unaffected.

--------------------------------------------------------------------------------

	Release 58 (240303)

Frame skipping is no longer performed. It was not well implemented and hardly
anyone knew how to configure it. Consequently, the animation is now smoother
for most people. The MBCS edition still skips frames, so that option remains
if your computer is extremely slow. Furthermore, the previous version will
remain available on the website indefinitely, albeit for unrelated reasons.


Bug fixes:

Starting full-screen could lag under certain circumstances. It is unclear
if the original program had the same defect; its full-screen mode involved
changing the display resolution, which is slow.

--------------------------------------------------------------------------------

	Release 59 (240822)

Support for 24-kHz display modes was improved, but only for the Unicode edition.

Horizontal timings are now slightly more accurate (by less than 1 nanosecond.)

The real-time clock (RTC) window now accepts mouse and keyboard input.
This makes it much easier to set the RTC to arbitrary dates/times.

Removed some potential annoyances with the Apps and F10 keys. Notably, the Apps
key now closes menus, since it can also open them (often unintentionally).

Added safeguards to prevent renaming / deleting image files that are in use.
This only applies to using the F2 / Delete keys in conjunction with the
various applicable menus - you can still modify files outside of XM6.

F2 can now be used with menu items associated with cheats for easier renaming.


Bug fixes:

When loading state, audio from the previous state could sometimes be heard.

When loading state, extraneous FM sounds could rarely be heard.

The real-time clock (RTC) emulation had numerous mistakes. (Accurate handling
of invalid values, such as Hexadecember 0th, is still not emulated perfectly.)

The former anti-screen-saver method was not compatible with some systems.

The Shift-F10 system hotkey (which opens pop-up or context menus) was sometimes
unreliable due to interference from the meta-key feature (refer to the manual).

Renaming files (by holding F2 while selecting a menu item) was sometimes not
also renaming matching items in the MRU lists.

F2 was not able to rename files when used with some of the MRU menus.

Active state files were not being marked in the "Nearby" menu in certain cases.

The (Shift-)Alt-Backspace accelerators, used for state file cycling, were not
behaving similarly depending on whether or not the state files that were being
cycled were stored within an archive. The new behavior should be more intuitive.

--------------------------------------------------------------------------------

	Release 60 (240929)

Headerless 2HDA images can now be created in the New Floppy Disk dialog.

Reworked the CRTC/VICON window to be more informative and less misleading.

Added a few safeguards for corrupt SRAM.

Added a submenu under Tools for manipulating SRAM and the SRAM.DAT file
(which stores the contents of SRAM between sessions).

Added a submenu under Tools for manipulating the text-based configuration file
(usually named XM6.ini). For technical reasons, there is currently no way to
safely write out the file while XM6 is running, so most of the commands are not
very useful, but being able to see and toggle the read-only attribute is handy.

The Insert New Disk commands now skip the creation dialog whenever practical.
(The UI just keeps getting better!) You still get the dialog if you select
certain container formats in the save dialog, or if you use one of the commands
under the Tools menu instead of the drive-specific menus. Furthermore, if you
hold Shift while selecting the command, it will default to an unformatted disk.

Whenever you open the Options dialog and activate the Joystick page,
controller-type input devices will be rescanned. This allows you to
configure and use a controller connected after XM6 starts. I only have
one such device to test with, so there could still be issues; however,
you can always restart the program if something goes awry.


Bug fixes:

Undoing a Reset and Clear wasn't working because the in-memory backup copy of
the VM state was being made after the memory clearing had already taken place.

Reset and Clear wasn't clearing TVRAM. This was originally done intentionally,
albeit not for very good reasons; it became an oversight with the advent of
state-file compression.

Controller hardware errors (such as unplugging) were not handled correctly.

If the Save History / Keep History option was disabled, paths for hard drives
were still being saved even if unused. Now paths for unused drives are omitted.
Also, paths to non-existent HDD images are now considered unused.

The "even/odd" interlace field state was not being restored on state load.

Changes implemented in Release 49 to the text-based configuration file caused
the documentation/help to be inaccurate regarding certain points.

Text window contents copied to the clipboard could be outdated/incomplete.

Status bar panes were sometimes blacked-out during dialogs.

Fixed a ridiculous UI error of my own making related to the power switch.

Fixed a few bugs that might not have affected public releases.

--------------------------------------------------------------------------------

	Release 61 (241031)

The dialog interface for the 68000 assembler (a feature of disassembly windows)
was tweaked to make it easier to use. Notably, erroneous input is now retained
for at least one cycle, enabling it to be corrected without re-entering it.
If the same erroneous input is resubmitted, the dialog will be aborted.

Different mouse linearization algorithms are now used for specific games.

Loading state while the VM power is off is no longer prohibited.

The VM is now paused on single-processor systems while extracting files
from large archives, which can be very CPU-intensive.


Bug fixes:

Mouse Mode was sometimes not being restored after closing dialogs.

Fixed many more defects/inconsistencies related to the power switch being off.

--------------------------------------------------------------------------------

	Release 62 (241111)

The 68000 assembler dialog now marks text pre-loaded from the clipboard.

In order to simplify thread-safety analysis, certain debugging commands are now
performed exclusively by the VM thread. The difference should not be noticeable;
I only mention it in case some unanticipated consequence manifests itself.


Bug fixes:

Debugging commands utilizing F10 could cause menus to activate unexpectedly.

Eliminated a pattern of race conditions related to thread termination.
It never actually caused any problems as far as I know, however.

--------------------------------------------------------------------------------

	Release 63 (241212)

Fast Forward (tilde key) and No-Wait MPU (Shift-Tilde) are now permitted while
in high-priority mode if a suitable number of logical processors are available.

The caption bar (title bar) now shows additional strings. While running,
"[Debugging]" alerts the user that certain debugging features are active,
possibly degrading performance, and, in the case of non-memory breakpoints,
potentially reducing emulation accuracy. "[Mid-Frame]" indicates that the
VM paused in the midst of frame rendering, implying that the screen being
displayed may be inaccurate, potentially combining parts of the previous
and current frame. This won't normally happen outside of debugging.


Bug fixes:

Screen shots taken with the VM unpaused were often inaccurate.

Changing certain view settings while paused did not also re-render the screen.

Eliminated a potential buffer overrun.

Eliminated several race conditions, some of which were my fault.

Eliminated a double reset in the power-on case.

Removed redundant redraws / refreshes.

Fixed some minor bugs related to special debugging commands I added long ago.

"Painting" the main window had some inconsistencies.

Menu detritus was sometimes lingering.

The level meter wasn't behaving consistently when fast-forwarding.

--------------------------------------------------------------------------------

	Release 64 (250101)

Holding Shift while closing a subwindow now closes any other subwindows instead.
Alternatively, holding Control causes all subwindows to close. These qualifier
keys now also apply to F4. Furthermore, these features are now also available
in the form of system menu commands.

The "Alt, x" method of activating menus (in contrast to Alt-x, where x
is any mnemonic character for menus shown in the main menu bar) now also
works if a subwindow is active. In the event of mnemonic conflicts between
subwindow menus and the main menu bar, subwindow menus have priority.

Removed the "Ready" status bar idle message because it does not seem to convey
any useful information and can even be misleading at times.


Bug fixes:

On-activation input blocking was sometimes insufficient for the Alt-Tab case.

Using the meta-key feature could cause context menus to open unexpectedly
if the VM halted after the Apps key was depressed but before it was released.

Accelerators were usually causing subwindows to lose their activation status.

Several new submenus were not working if they were opened via accelerator.

Fixed some minor bugs related to my expansion of keyboard activation of menus.

Fixed some bugs related to my extensions to mouse input.

--------------------------------------------------------------------------------

	Release 65 (250202)

Bug fixes:

A few uncommon disk image formats were potentially causing concurrency failures,
as of the last release.

Certain subwindows were sometimes opening behind others, as of the last release.

Fixed some bugs in the previous release related to subwindow menus.

Fixed some bugs related to the cheat entry non-modal dialog.

--------------------------------------------------------------------------------

	Release 66 (250505)

Under constrained circumstances, double-clicking while fast-forwarding is now
converted into direct VM inputs so that X68000 software will detect it reliably.
(Unless your PC is very slow or heavily loaded, VM software will usually detect
the second click long after the first and therefore interpret them as two
separate clicks, due to the time stretching inherent in fast-forwarding.)
For reasons of caution, this feature is only applied in a few circumstances.

You can now hold Shift while selecting a vector menu item to jump to the
address of the vector itself.

Trimmed some fat from several string tables.


Bug fixes:

Status area messages were sometimes lingering during menus/dialogs.

Fixed some oversights related to the frame window caption text (my fault).

--------------------------------------------------------------------------------

	Release 67 (250606)

Right-clicking off of a menu will no longer reopen the same category of menu.
Most people rarely try to do this, but it's annoying to them when it happens.
This feature has the side effect of making it seem like you can close menus
by right-clicking outside of them, but such behavior is not guaranteed.
For example, it won't work if right-clicking would open a different menu
(which is intentional) or if you long-click the right mouse button.

Clicking the middle mouse button outside of a menu now closes the menu
and may also enable Mouse Mode.

The usability of (most) mouse-initiated pop-up menus has been subtly improved.

When coming out of Mouse Mode, the mouse cursor will now be centered relative
to the program's frame window instead of the screen.

Alt-Space now works for the frame window even if the caption bar is turned off,
unless either Alt key is mapped (including temporarily) while the VM is running.

If a window (including the frame window) has a caption bar but no menu bar,
closing its system menu now ends menu processing entirely, because there are
no other possible menus to open via the keyboard in such a situation.

In order to work around a bug/oversight in the much maligned DWM, the visual
style of subwindows (not commonly used) might now be different on your system.


Bug fixes:

The Alt, 2 and Alt, 3 shortcut sequences were not working as expected.

The status bar was not showing if the program started minimized.

Maximizing the frame window while it was minimized was not working correctly.

Mouse blanking might not have been working under certain conditions.

Mouse blanking could remain active if moving a blanked cursor onto the menu bar.

Left-clicking off of a disassembly window menu could toggle breakpoints.

Left-clicking should have deactivated mouse blanking when not in Mouse Mode.

Menu detritus was sometimes lingering briefly when closing menus by clicking.

Fixed an enormous number of bugs/inconsistencies/annoyances related to the
mouse when used for user-interface purposes, such as Mouse Mode (de)activation.
Unfortunately, not all of them could be fixed: the more obscure ones involved
interactions with things I don't have much control over, such as the taskbar.

--------------------------------------------------------------------------------

	Release 68 (250707)

The Page Up/Down keys can now be used to navigate menus. (Num Lock must be off
if you intend to use the equivalent keys on the Number Pad. Or you can hold
Shift to temporarily bypass an active Number Lock.) This feature makes the
the various file browser menus much more useful.

The Shift/Control qualifier keys now work better in menus.

If a disk image cannot be built from a directory, in some cases heuristics
will now be used to decide whether to reinterpret the user-supplied directory
as the current directory. Holding the Control key is still more reliable though.

If the frame window was centered before adding/removing bars (e.g. caption bar)
it will now be recentered afterwards (in case the window size changed).

Support for multiple displays (monitors) has been greatly expanded.

Added a workaround for some sort of driver/API defect that could cause
graphical corruption on the right side under certain circumstances.
(Having tested it with two APIs, I'm now confident it's a driver problem.)


Bug fixes:

Many more minor UI malignancies meliorated.

Toggling the caption bar was changing the window size in an inconsistent manner.

Invalid coordinates were sometimes being saved when quitting while minimized.

It was sometimes possible for the saved frame window coordinates to be applied
even if it placed the window entirely off-screen.

A bug fixed in the previous release wasn't actually affecting public versions!
It is now expunged from the log. My cautious nature saved the day once again.

The following hypothetical issue may have been fixed:

 Please be aware that holding Shift while activating an MRU keyboard
 mnemonic might not work with certain keyboard layouts, particularly
 international keyboards.

Be aware that using Shift in conjunction with the Number Pad during menus
has never worked due to interference from the operating system.

--------------------------------------------------------------------------------

	Release 68+1 (250808)

You can now toggle the status bar by double-clicking its left side
(or the approximate area where it would be, if it is currently off).

You can now toggle the menu bar by double-clicking its right side (or the
approximate area where it would be, if it is currently off, in window mode).

You can now drag the main part of the window (known as the client area)
if the caption bar is turned off. This feature was added because most people
don't know how to move a window lacking a caption/title bar. Because it makes
it a little too easy to move the window, it is unavailable while the title bar
is present. (Did you even know you could disable any/all of the three bars?)


If the window or full-screen display falls short of the VM screen height
by a small margin, the bottom of the VM video frame will be truncated
rather than shrinking it to fit the available window/screen.

For example, suppose your monitor has a height of 1024 pixels and you are in
full-screen mode. With the status bar enabled, the usable height is reduced
to 1004. Then suppose you run a game that displays a 768x1024 (interlaced)
loading picture. Previously, said picture would be shrunk by a factor of 0.98
in order to fit, which looks ugly. But with this new feature, the bottom 20
pixels will simply not be displayed such that the remainder of the picture
will be undistorted.

In the above example, if you were to remove the status bar (View > Status Bar)
then the entire 1024 vertical span would be available and truncation would not
be performed. This is optimal, but toggling the status bar can be inconvenient.

Also note that the View > Win32 > Bitmap subwindow will show a less-than symbol
if truncation is in effect. It will also show the ratio that would have been
used (absent truncation) in parentheses.

If it looks like something is missing on the bottom, you could try toggling
the menu bar (window-mode only) or status bar, either of which will increase
the height enough to overcome any truncation. Situations where the truncation
feature apply are rare, and even when it does apply, it is unlikely that
anything important would be hidden.

This feature has no effect on screen shots - they always save the entire frame.


The resolution-changing feature has been restored even though apparently
nobody uses it. If it weren't for my policies, I'd remove it entirely.

There is also a new setting (see the View menu) that blocks changes
to your primary display, so you will need to disable that safeguard
if you only have one monitor/screen and you want to use low-rez mode.

Furthermore, it no longer tries to change the vertical refresh rate,
because you might have a TV connected and configured for 59.94 Hz
but the API only supports integers (e.g. 60 Hz). Maybe that's not
really an issue, but 800x600 is so low these days it's better to
just accept the recommended frequency instead of specifying one.


Eliminated some graphical garbage during resets and state loading. Not a bug.

The Smoothing menu item is now disabled at times when smoothing is inapplicable.

The graphics section of the manual has been revised.

Double-clicking menu bar items (which is supposed to select the default submenu
item shown in bold, if any) now works more reliably. If there is no default,
the menu bar will now be deactivated instead.

The driver-bug workaround used in the previous release was resulting
in major slowdown if the client area was obscured, even by menus.
This slowdown was another driver/API defect. A new workaround was
discovered that resolves both issues and more (see below).

The following item from the trouble-shooting section has been resolved:
 "Graphical shimmer or vertical 'waving' is visible in some games"
The workaround mentioned above fixed this driver/API defect as well.
Incidentally, there were two completely different sets of hardware
and associated drivers that were involved in all of these problems.
Also, these are not "bug fixes" because this program was not at fault.


Bug fixes:

Additional casualties scored in the ceaseless war on user interface defects.

Contrast fading was continuing while paused in rare situations (my fault).

It was possible for the mouse wheel to switch to the same mode in certain cases.

It was hypothetically possible for the mouse wheel to fail to activate
full-screen-maximum mode under certain circumstances.

Full-screen transitions were inesthetic under certain configurations.

--------------------------------------------------------------------------------

	Release 70 (250909)

Support for multiple displays (monitors) is now complete. There is a new menu
under the View menu for setting preferences for which screen will be used in
full-screen mode. The rarely used Window menu has also been expanded with
similar preferences relating to the main window's location at the start of
the program, as well as finer control over other startup settings.

You may consult the manual for excessive detail about the new preferences.

--------------------------------------------------------------------------------

	Release 71 (251010)

Fixed some inconsistencies (on some systems) relating to menus, fonts,
and subwindows. Other minor esthetic improvements were also achieved.

Added a workaround for subwindows sometimes not appearing when first opened.

Fixed some usability issues with keyboard mapping.


Bug fixes:

Eliminated several instances of extremely rare crashes and/or memory corruption.

Fixed some problems with non-pop-up-style subwindows (my fault).

The Software Keyboard was not as responsive to right-clicking as left-clicking.

Closing menus via the right mouse button was not working sometimes.

--------------------------------------------------------------------------------

	Release 72 (251111)

This program is now "DPI aware". That only makes a difference on systems where
the display scaling factor is greater than 100% for at least one screen. In the
past, it would look fuzzy when scaling was imposed, and there could be glitches.
If you want to see what it used to look like, you can use the MBCS edition of
the program. On older systems (but newer than XP) you may need to restart your
computer after changing the scaling factor if it starts looking fuzzy afterward.
There isn't anything I can do about that particular situation. (On XP and older,
you shouldn't need to restart, although I haven't extensively tested it.)

Note that although the main window may be larger (when scaling is applicable),
the VM image itself will not be enlarged unless the window is large enough
to perform integer-multiple scaling. This is because non-integral vertical
stretching causes distortion, which looks bad and behaves inconsistently
depending on the video drivers.

Most users probably do not have scaling applied to their systems, so you
don't need to care about this feature unless you notice a difference.


Bug fixes:

The program would fail to start if no pointing device was installed.

The log window was not scaling its row height proportionally for its font.

The main window was not resizing when dragged from a monitor that was too small
onto a monitor with sufficient room to meet the minimum window size.

--------------------------------------------------------------------------------

	Release 73 (251212)

Support for DPI-based scaling (introduced in the last release) is now basically
complete. All(*) GUI elements are now subject to scaling. There may be a few
minor issues remaining; if any are discovered/reported, they can be addressed
in future releases, although they might not be worth documenting.

Certain modal dialogs will cancel themselves if the DBSF changes.
This is done as a workaround for things I have no control over.

Certain dialogs now look different. This was a consequence of resolving
several issues caused by DPI-based scaling. This change does not apply
to the MBCS edition.

Ideally the artwork (icons, etc.) should be redrawn so that it looks better at
higher scaling factors. Currently the artwork is stretched/contracted as needed.

The Software Keyboard window's vector-based drawing is now scalable, and the
font is now larger when appropriate. Furthermore, the text printed on certain
keys will no longer be abbreviated if sufficient room is available.

(*) Everything is scaled with the following exceptions:
 The PCG viewer is so small that increasing its status bar font would cause the
text to no longer fit. (Bitmap windows do not scale their contents because it
would distort the graphics. You want an exact replica when you press Ctrl-C.)
 One message box associated with a fatal error for very old CPU architectures
occurs too early to be properly scaled. [Update: It was later discovered that
the more conservative public release was scaling it properly, thanks to the
use of a different manifest.]

The executable size was reduced slightly.

The Software Keyboard window now displays Meta-key combinations.

After more than two decades, bitmap windows can finally be maximized.
Note that some of the larger windows may incur a performance penalty.


Bug fixes:

Fixed some longstanding issues related to resizing bitmap windows.

Fixed a source of stuck keys when the program was suddenly deactivated.

The status bar was not being updated during certain "modal" operations.

The Keyboard Mapping dialog wasn't display the mapping for certain keys.

In the Key Assignment dialog, pressing F10 would block certain subsequent keys.

The TrueKey key assignment dialog was more likely to miss key presses than now.

--------------------------------------------------------------------------------

	Release 74 (260101)

Additional sizes for the icons are now available, primarily to support higher
scaling factors. In order to keep the program size down, some of the larger
icon sizes are not available on XP or older, due to their lack of support
for icon compression.

Unfortunately, due to defective icon caching inherent in your OS, certain icons
may remain in low resolution even after the program is updated. As a workaround,
the procedure for updating the program was overhauled, and the icon cache will
now be rebuilt during relevant updates or on any full reinstallation.

If you were wondering why your icons flickered briefly during this update,
that's the reason. This should not occur on future updates unless the main
set of icons change.

If you prefer the less secure method of manually updating, or are doing
something unusual, like synchronizing the program with another computer
over a network, you need to force the icon cache to be rebuilt on any
computer receiving the updated program. You can do this through the
program itself by selecting Tools > Install > Fix Icons from the menu.

Incidentally, you could also use this feature for general purposes:
if you know or suspect that your system's icon cache is inaccurate,
you can use that menu item to rebuild it. It only takes a few seconds.

The updated Web Package (mentioned earlier) should now be more tolerant
of mixed character sets in the local path. Also, it now uses HTTPS,
even though it isn't really necessary - the PGP signature check verifies
that the downloads haven't been tampered with.

The DLL Package was also updated. I don't think the older package has
any security risks associated with it, but it's better to be on the
safe side. In the future, the DLL pack will be updated more frequently,
so the update scripts were revised to check the version number for that
package as well. Be sure to keep it up-to-date if updating manually.

Scaling for the About dialog was improved.

The MRU list for the File drop-down menu may now be abbreviated to reduce the
likelihood of obscuring the status bar message area. The pop-up / context menu
equivalent is unaffected: press Apps or Shift-F10, then the F key to open it.

The language in the program meta data was changed to English. I doubt this will
cause any problems, but if it does, I won't know about it unless you tell me.


Bug fixes:

Subwindows opened with Alt-N / Alt-F11 sometimes had garbage in non-pop-up mode.

--------------------------------------------------------------------------------
